﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Model
{
    // klassen bruges til at kunne oprette en auktion 
    public class Auktion
    {
        private string beskrivelse;
        private string navn;
        private int pris;
        private int højestePris;
        private string nuværendeVinder;

        // her oprettes et låse objekt 
        object objektLås = new object(); 

        // constructor
        public Auktion(string navn, string beskrivelse, int pris)
        {
            this.beskrivelse = beskrivelse;
            this.navn = navn;
            this.pris = pris;

            højestePris = pris; // Auktionen har en startpris denne er sat til højeste pris til at starte med
            nuværendeVinder = null; // der er ingen nuværende vinder til at starte med
        }

        // metode til at AfgivBud 
        public void AfgivBud(int beløb, string byder)
        {
            // låser da der er kritisk område
            lock (objektLås)
            {
                // lægger det belæb til man har trykket i klientens GUI og lægger til højesteprisen
                højestePris += beløb;
                // sætter byderen der har budt til at være den nuværende vinder
                nuværendeVinder = byder;
            }
        }


        #region *** Properties ***
        public string Navn
        {
            get { lock (objektLås) return navn; }
        }
        public int HøjestePris
        {

            get { lock (objektLås) return højestePris; }
            set { lock (objektLås) højestePris = value; }
        }
        public string NuværendeVinder
        {
            get { lock (objektLås) return nuværendeVinder; }
            set { lock (objektLås) nuværendeVinder = value; }
        }

        public string Beskrivelse
        {
            get { lock (objektLås) return beskrivelse; }
        }

        #endregion
    }
}
